Skip to content

fix(config): validate custom rules, accept language names, add a dry run - #691

Merged
ajianaz merged 1 commit into
developfrom
fix/684-validate-custom-rules
Oct 16, 2026
Merged

ajianaz merged 1 commit into
developfrom
fix/684-validate-custom-rules

Conversation

@ajianaz

@ajianaz ajianaz commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

What

  • Config::validate (so config load and cora config validate) now rejects an invalid regex, an empty or duplicate id, an id shadowing a built-in rule, an empty message, an empty languages list and unknown languages values, naming the rule.
  • languages accepts language names (rust) as well as extensions (rs); languages and exclude are optional.
  • cora config validate --dry-run [--path DIR] runs each custom rule over the project and prints how many lines it matched (0 matches is flagged).
  • docs/configuration.md shows the real schema (rules_engine.custom, the free-text rules: list, required fields); the 0.19.0 changelog line says custom.

Why

A mistyped pattern or language made a rule silently inactive while config validate said valid. Closes #684, closes #678.

Testing

  • Unit tests for validation, language normalisation and optional YAML fields.
  • 4 end-to-end tests in tests/custom_rules.rs (invalid regex fails validation, docs example loads and fires, unknown language, dry run flags a silent rule).
  • fmt, clippy -D warnings and the full suite pass.

…run (#684, #678)

Signed-off-by: ajianaz <ajianaz@users.noreply.github.com>
@ajianaz
ajianaz merged commit 534ac02 into develop Oct 16, 2026
14 checks passed
ajianaz added a commit that referenced this pull request Oct 27, 2026
…run (#691)

## What

- `Config::validate` (so config load and `cora config validate`) now
rejects an invalid regex, an empty or duplicate id, an id shadowing a
built-in rule, an empty message, an empty `languages` list and unknown
`languages` values, naming the rule.
- `languages` accepts language names (`rust`) as well as extensions
(`rs`); `languages` and `exclude` are optional.
- `cora config validate --dry-run [--path DIR]` runs each custom rule
over the project and prints how many lines it matched (0 matches is
flagged).
- `docs/configuration.md` shows the real schema (`rules_engine.custom`,
the free-text `rules:` list, required fields); the 0.19.0 changelog line
says `custom`.

## Why

A mistyped pattern or language made a rule silently inactive while
`config validate` said valid. Closes #684, closes #678.

## Testing

- Unit tests for validation, language normalisation and optional YAML
fields.
- 4 end-to-end tests in tests/custom_rules.rs (invalid regex fails
validation, docs example loads and fires, unknown language, dry run
flags a silent rule).
- fmt, clippy -D warnings and the full suite pass.

Signed-off-by: ajianaz <ajianaz@users.noreply.github.com>
Co-authored-by: ajianaz <ajianaz@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant